package com.stars.questions.commonQuestion.config.service;

import com.alibaba.fastjson2.JSONObject;
import com.stars.base.entity.CommonDTO;
import com.stars.questions.commonQuestion.config.entity.QuestionsCommonConfig;
import com.stars.questions.commonQuestion.config.entity.QuestionsCommonConfigSub;

import java.util.List;
import java.util.Set;

/**
 * 问卷配置服务接口
 * @author : moon
 * @date :  2024/6/29 17:10
 */
public interface QuestionsCommonConfigService {

    /**
     * 获取已发布的问卷
     * @author : Rocks
     * @date :  2024/6/29 18:06
     * @param id 要加载问卷ID
     * @return Question
     */
    QuestionsCommonConfig getPublishQuestion(String id);

    /**
     * 根据问卷ID获取问卷题目信息
     * @author : Rocks
     * @date :  2024/6/29 18:18
     * @param id 问卷ID
     * @return List<QuestionsCommonConfigSub>
     */
    List<QuestionsCommonConfigSub> loadQuestionSub (String id);

    /**
     * 随机抽取当前问卷指定数量的问卷序号
     * @author : Rocks
     * @date :  2023/2/27 22:13
     * @param question 指定问卷
     * @param questionCount 要抽取问卷的数量
     * @return Set<Integer> 抽取问卷序号集合
     */
    Set<Integer> generateRandomNum(QuestionsCommonConfig question, int questionCount);

    /**
     * 配置问卷列表数据
     * @author : moon
     * @date :  2024/6/30 12:01
     * @param: dto 列表dto
     * @return: com.alibaba.fastjson2.JSONObject
     */
    JSONObject configList(CommonDTO dto);

    /**
     * 加载问卷表单数据
     * @author : moon
     * @date :  2024/6/30 12:00
     * @param: id 问卷id
     * @return: QuestionsCommonConfig 问卷实体
     */
    QuestionsCommonConfig loadQuestionData(String id);

    /**
     * 问卷表单保存
     * @author : moon
     * @date :  2024/6/30 12:00
     * @param: bean 问卷实体
     * @return: boolean
     */
    boolean formSave(QuestionsCommonConfig bean);

    /**
     * 删除问卷
     * @author : moon
     * @date :  2024/6/30 12:00
     * @param: id 问卷id
     * @return: boolean
     */
    boolean delRecord(String id);

    /**
     * 问卷取消发布
     * @author : moon
     * @date :  2024/6/30 11:59
     * @param: id 问卷id
     * @return: boolean
     */
    boolean unPublish(String id);

    /**
     * 问卷发布
     * @author : moon
     * @date :  2024/6/30 11:59
     * @param: id 问卷id
     * @return: com.alibaba.fastjson2.JSONObject
     */
    JSONObject publish(String id);

    /**
     * 子表删除
     * @author : moon
     * @date :  2024/6/30 11:59
     * @param: subId 子表id
     * @return: boolean
     */
    boolean deleteSub(String subId);
}
